一般使用SharedPreferences時如果沒有特別的想法,可能會像上次一樣直接使用它,但這樣如果在很多地方使用到,可能會造成許多地方有重複的程式碼,在SharedPreferences的時候我通常會這樣使用。
首先創建一個interface,之後會再去實作它,先在裡面放入符合自己需求的格式。
public interface PreferencesHelper {
boolean getBooleanData();
void setBooleanData(boolean booleanData);
String getStringData();
void setStringData(String stringData);
Long getLongData();
void setLongData(Long longData);
Integer getIntegerData();
void setIntegerData(Integer integerData);
}
接下來再新增一個class,來實作剛才的各個方法。
public class PreferencesHelperImp implements PreferencesHelper {
private String SharedPreferencesKey = "SharedPreferencesKey";
private final SharedPreferences mSharedPreferences;
private static final String PREF_KEY_BOOLEAN_DATA = "PREF_KEY_BOOLEAN_DATA";
private static final String PREF_KEY_STRING_DATA = "PREF_KEY_STRING_DATA";
private static final String PREF_KEY_LONG_DATA = "PREF_KEY_LONG_DATA";
private static final String PREF_KEY_INTEGER_DATA = "PREF_KEY_INTEGER_DATA";
public PreferencesHelperImp(Context context) {
mSharedPreferences = context.getSharedPreferences(SharedPreferencesKey, Context.MODE_PRIVATE);
}
@Override
public boolean getBooleanData() {
return mSharedPreferences.getBoolean(PREF_KEY_BOOLEAN_DATA, true);
}
@Override
public void setBooleanData(boolean booleanData) {
mSharedPreferences.edit().putBoolean(PREF_KEY_BOOLEAN_DATA, booleanData).apply();
}
@Override
public String getStringData() {
return mSharedPreferences.getString(PREF_KEY_STRING_DATA, "");
}
@Override
public void setStringData(String stringData) {
mSharedPreferences.edit().putString(PREF_KEY_STRING_DATA, stringData).apply();
}
@Override
public Long getLongData() {
return mSharedPreferences.getLong(PREF_KEY_LONG_DATA, 0);
}
@Override
public void setLongData(Long longData) {
mSharedPreferences.edit().putLong(PREF_KEY_LONG_DATA, longData).apply();
}
@Override
public Integer getIntegerData() {
return mSharedPreferences.getInt(PREF_KEY_INTEGER_DATA, 0);
}
@Override
public void setIntegerData(Integer integerData) {
mSharedPreferences.edit().putInt(PREF_KEY_INTEGER_DATA, integerData).apply();
}
}
最後就能夠在各個地方去使用了
//在需要使用的地方先宣告剛才的class
public PreferencesHelperImp preferencesHelperImp;
//在使用前先new出來,並放入context
preferencesHelperImp = new PreferencesHelperImp(getApplicationContext());
//最後是使用的地方
preferencesHelperImp.setBooleanData(false);
Log.e("my data",""+preferencesHelperImp.getBooleanData());
preferencesHelperImp.setBooleanData(true);
Log.e("my data",""+preferencesHelperImp.getBooleanData());
到這邊便完成了SharedPreferences的部分。